<?php

class Application_Form_Product extends Zend_Form
{
    private $view;
    public function init()
    {
        /* Form Elements & Other Definitions Here ... */
        $this->view = Zend_Layout::getMvcInstance()->getView();
        
        // create id element
        $id = $this->createElement("hidden","id");
        $id->setDecorators(array("ViewHelper"));
        $this->addElement($id);
        
        // create element category
        $category = $this->createElement("select","category");
        $category->setLabel("Lựa chọn")->addMultiOptions(array("Danh mục..."))
                  ->addValidators(array(
                        array("GreaterThan",false,array("min"=>0,"messages"=>array('notGreaterThan'=>"Sản phẩm phải thuộc một danh mục."))),
                  ));
        $this->addElement($category);
        
        // create element brand
        $brand = $this->createElement("select","brand");
        $brand->addMultiOptions(array("Thương hiệu..."));
        $this->addElement($brand);
        
        //create element code
        $code = $this->createElement("text","code");
        $code->setLabel("Mã sản phẩm")
                     ->setRequired()
                     ->addValidators(array(
                        array("NotEmpty",false,array("messages"=>array('isEmpty'=>"Mã sản phẩm không được để trống."))),
                     ))
                     ->setAttrib("size","30");            
        $this->addElement($code);
        
        //create element name
        $name = $this->createElement("text","name");
        $name->setLabel("Tên sản phẩm")
                     ->setRequired()
                     ->addValidators(array(
                        array("NotEmpty",false,array("messages"=>array('isEmpty'=>"Tên sản phẩm không được để trống."))),
                     ))
                     ->setAttrib("size","100");            
        $this->addElement($name);
        
         //create element description
        $description = $this->createElement("textarea","description");
        $description->setLabel("Mô tả")
                    ->setAttribs(array(
                        'class' => "ckeditor",
                        'rows' => 30
                    ));
        $this->addElement($description);
        
        //create element image
        $image = $this->createElement("file","image");
        $image->setLabel("Hình ảnh sản phẩm")
              ->addValidators(array(
                'Size' => array(
                    'min'=>2*1024, 
                    'max'=>4*1024*1024, 
                    'messages'=>array(
                        'fileSizeTooBig'=>"Kích thước của hình '%value%' phải nhỏ hơn '%max%'",
                        'fileSizeTooSmall'=>"Kích thước của hình '%value%' phải lớn hơn '%min%'"
                    )
                ),
                'Extension' => array(
                    "jpg,jpeg,png,gif", 
                    'messages'=>array(
                        'fileExtensionFalse'=>"Hình '%value%' không đúng dạng quy định(.jpg|.jpeg|.png|.gif)."
                    )
                ),
            ))->setDestination(APPLICATION_PATH."/../public/images/product/");
        $this->addElement($image);
        
        ////create element price
        $price = $this->createElement("text","price");
        $price->setLabel("Giá bán")
                     ->setAttrib("size","30")
                     ->setValue(0);            
        $this->addElement($price);    
      
              
        // create submit button
        $submit = $this->createElement("submit","submit");
        $submit->setLabel("Lưu")
               ->setAttrib("class","btn btn-black");
        $this->addElement($submit);
        
        
        // create submit button
        $reset = $this->createElement("reset","reset");
        $reset->setLabel("Nhập lại")
              ->setAttrib("class","btn btn-orange");
        $this->addElement($reset);
        
        // create submit button
        $link = $this->view->url(array(
            'module'=>"admin",
            'controller'=>"product",
            'action'=>"index"
        ));
        $cancel = $this->createElement("button","cancel");
        $cancel->setLabel("Quay lại")
               ->setAttrib("class","btn btn-red")
               ->setAttrib("onclick","window.location='$link'");
        $this->addElement($cancel);
    }

    public function createForm($name, $option = array()){
        
        //create element article_name
        $article_name = $this->createElement("text","article_name");
        $article_name->setLabel("Tên $name")
                     ->setRequired()
                     ->addValidators(array(
                        array("NotEmpty",false,array("messages"=>array('isEmpty'=>"Tên '$name' không được để trống."))),
                     ))
                     ->setAttrib("size","100");            
        $this->addElement($article_name);
        
        // Nếu có mô tả
        if(isset($option['has_description']) && $option['has_description']==1){
            $article_description = $this->createElement("textarea","article_description");
            $article_description->setLabel("Mô tả $name")
                                ->setAttrib("rows",3)
                                ->setAttrib("style","width: 99%");
            $this->addElement($article_description);
        }
        
        // Nếu có nội dung
        if(isset($option['has_content']) && $option['has_content']==1){
            $content = $this->createElement("textarea","article_content");
            $content->setLabel("Nội dung $name")
                    ->setAttribs(array(
                        'class' => "ckeditor",
                        'rows' => 30
                    ));
            $this->addElement($content);
        }
        
        if(isset($option['has_link']) && $option['has_link']==1){
            //create element article_link
            $article_link = $this->createElement("text","article_link");
            $article_link->setLabel("Link $name")
                         ->setAttrib("size","100");            
            $this->addElement($article_link);
        }
        //Nếu có hình ảnh
        if(isset($option['has_image']) && $option['has_image']==1){
            $image = $this->createElement("file","article_image");
            $image->setLabel("Hình ảnh $name")
                  ->addValidators(array(
                    'Size' => array(
                        'min'=>2*1024, 
                        'max'=>4*1024*1024, 
                        'messages'=>array(
                            'fileSizeTooBig'=>"Kích thước của hình '%value%' phải nhỏ hơn '%max%'",
                            'fileSizeTooSmall'=>"Kích thước của hình '%value%' phải lớn hơn '%min%'"
                        )
                    ),
                    'Extension' => array(
                        "jpg,jpeg,png,gif", 
                        'messages'=>array(
                            'fileExtensionFalse'=>"Hình '%value%' không đúng dạng quy định(.jpg|.jpeg|.png|.gif)."
                        )
                    ),
                ))->setDestination(APPLICATION_PATH."/../public/images/article/");
            $this->addElement($image);
        }
        
        
        // Nếu có link youtube
        if(isset($option['has_youtube']) && $option['has_youtube']==1){
             //create crawler element
            $youtube = $this->createElement("text","article_youtube");
            $youtube->setLabel("Link Yotube")
                    ->setAttrib("size",100);
            $this->addElement($youtube);
        }
        
        // Nếu có nguồn thu
        if(isset($option['has_crawler']) && $option['has_crawler']==1){
             //create crawler element
            $crawler = $this->createElement("text","article_crawler");
            $crawler->setLabel("Nguồn thu")
                    ->setAttrib("class","mini");
            $this->addElement($crawler);
        }
        
        // Nếu có tags
        if(isset($option['has_tags']) && $option['has_tags']==1){
            $tags = $this->createElement("text","article_tags");
            $tags->setLabel("Tags")
                 ->setAttrib("class","mini");
            $this->addElement($tags);
        }
        
        // Nếu cho phép cập nhật
        if(isset($option['allow_update']) && $option['allow_update']){
            // create submit button
            $submit = $this->createElement("submit","submit");
            $submit->setLabel("Lưu")
                   ->setAttrib("class","btn btn-black");
            $this->addElement($submit);
        }
        
        // create submit button
        $reset = $this->createElement("reset","reset");
        $reset->setLabel("Nhập lại")
              ->setAttrib("class","btn btn-orange");
        $this->addElement($reset);
        
        // create submit button
        $link = $this->view->url(array(
            'module'=>"admin",
            'controller'=>"article",
            'action'=>"index"
        ));
        $cancel = $this->createElement("button","cancel");
        $cancel->setLabel("Quay lại")
               ->setAttrib("class","btn btn-red")
               ->setAttrib("onclick","window.location='$link'");
        $this->addElement($cancel);
    }

}

